home *** CD-ROM | disk | FTP | other *** search
/ Mac100% 1998 November / MAC100-1998-11.ISO.7z / MAC100-1998-11.ISO / オンラインソフト定点観測 / ユーティリティ / Mops 3.2.sea / Mops 3.2 / Mops 3.2 release notes next >
Text File  |  1998-07-04  |  7KB  |  205 lines

  1. ==================   Mops 3.2  RELEASE NOTES   ===================
  2.  
  3.  
  4. Here is the usual "release notes" describing the changes from the previous
  5. Mops versions, so that those already using it don't have to wade through all
  6. the documentation (or have to read right through the huge manual!!!).
  7.  
  8. The date of this release is July 1998.  If you've received it more than six 
  9. months later, it might be an idea to check the Web site to see if there's a
  10. later version.
  11.  
  12.  
  13. First, here are my contact details:
  14.  
  15. ------------------------------------------------------------------------
  16. Mike Hore        email:          mikeh@zeta.org.au
  17.                  Mops web page:  http://www.netaxs.com/~jayfar/mops.html
  18. snail-mail:                                                      _--_|¥
  19.         Michael Hore                                            /      ¥
  20.         54 Frederick St,                                        ¥_.--._*
  21.         Sydenham  NSW  2044,                                          v
  22.         AUSTRALIA.
  23. ------------------------------------------------------------------------
  24.  
  25.  
  26. Mops 3.2 is basically a consolidation release.  It fixes quite a
  27. number of minor bugs, some of which have been around for a while.
  28. It also has a number of improvements under the hood, and the
  29. PowerMops code has been generally cleaned up.
  30.  
  31. The Glossary (which you get to via Quick Edit) is now completely
  32. revised, and up to date.  This has been overdue for a loooong
  33. time!
  34.  
  35. There are a couple of things that I promised for this release
  36. which still haven't made it, notably the ability to generate
  37. a shared library.  Since I'll be away for most of August, it
  38. seemed best to go ahead with this release now, rather than
  39. wait until I get back.
  40.  
  41. This release only has a few new features which weren't in 3.1 --
  42. basically features of 68k Mops which were still to be implemented 
  43. in PowerMops.
  44.  
  45. The changes weren't sufficient to justify a new manual release,
  46. so the manual is still the 3.1 release version.  The extra features
  47. are described below.
  48.  
  49.  
  50.  
  51. BUGS FIXED
  52. ==========
  53.  
  54. 1. In 68k Mops, if you did something like this:
  55.  
  56. variable vb
  57. : crash  vb w@x 1000 > if 1 then ;
  58.  
  59. an illegal instruction would get generated.
  60.  
  61.  
  62. 2.  Also in 68k Mops, if a SysCall word returns a short (a 16-bit
  63. quantity), the sign wasn't always extended, and you could get junk in the high
  64. 16 bits.  This means that negative Toolbox error codes didn't always get
  65. returned properly.  This only happened on some Macs and systems.
  66.  
  67.  
  68. 3.  In PowerMops, on some Macs, there would be a crash while trying to
  69. build the system.  An illegal address was actually being dereferenced,
  70. and on most systems this didn't matter.
  71.  
  72. 4.  I also ran into a number of code generation bugs in PowerMops which
  73. didn't affect most code, but may have caused strange crashes.  These
  74. are all now fixed.
  75.  
  76.  
  77. Note that the problem given in the FAQ, for which I promised a fix,
  78. isn't fixed yet.  It didn't make it to the top of my "to-do" stack
  79. in time.  However, it's more an annoyance than a major bug:
  80.  
  81. If you highlight multiple lines in the Mops window (or in 
  82. QuickEdit) and hit enter, the interpretation doesn't quite follow
  83. the rules for normal multi-line interpretation.  This is because
  84. it uses EVALUATE, which doesn't know about multiple lines.  There
  85. was an attempt to handle "¥" - type comments, but it wasn't
  86. successful, and the only result was that you couldn't do [CHAR] ¥  
  87. and get what you expected.
  88.  
  89. Anyway I definitely should get this fixed for the next release.
  90.  
  91.  
  92.  
  93. NEW FEATURES IMPLEMENTED
  94. ====================
  95.  
  96. *  Local sections for methods are now implemented in PowerMops,
  97. as for 68k Mops.
  98.  
  99. *  Ability to be able to call a shared library in PowerMops.
  100. (See below for details.)  Note that we can't generate a 
  101. shared library yet -- hopefully this will make it into the
  102. next release.
  103.  
  104. *  Assertions  (Also see below.)
  105.  
  106. *  Cache for late-bound calls.  This is transparent to users,
  107. but gives a useful speedup to many late-bound calls --
  108. especially in loops, where it counts.  If a late-bound call
  109. hits in the cache, the overhead is reduced from around
  110. 500 machine instructions to about 200.
  111.  
  112.  
  113.  
  114.  
  115. CALLING A SHARED LIBRARY (PowerMops only)
  116. =========================================
  117.  
  118. You do this in a rather similar way to calling the system.
  119. You must first declare your library, like this:
  120.  
  121. library  MySharedLib
  122.  
  123. (As with SYSCALL, the library name is case sensitive.)
  124.  
  125. Then before any definition which calls the library, you
  126. must declare your call, using the word EXTERN (rather 
  127. like SYSCALL for calling the system).  The syntax is:
  128.  
  129.  
  130. EXTERN  <lib_name> <call_name>
  131.             ( #result_cells #parm1_cells ... #parmN_cells N -- )
  132.  
  133. (Again the call name is case sensitive.)
  134.  
  135. Example:
  136.  
  137. 1  1 1 1  3  extern  mySharedLib  myCall    
  138.                     ¥ 1 result cell, 3 1-cell parameters
  139.  
  140. We need to specify all this parameter and result information
  141. since Mops doesn't otherwise have it available (unlike system 
  142. calls, for which we have the xcalls file).
  143.  
  144. We specify each parameter separately since we must be able
  145. to indicate which if any are floating point (we'll see
  146. how to do this shortly).
  147.  
  148. The number of result cells will be either 0 or 1.  This is
  149. determined by the C/Pascal convention.  We have to observe
  150. this convention for shared libraries, since one of their 
  151. important features is that they can be called from any 
  152. language.
  153.  
  154. If any of your parameters or results are floating, you 
  155. specify this by passing the constant kFloat in the respective 
  156. parameter or result position.  So, let's say that the shared 
  157. library MathLib was being called this way.  We'd declare the 
  158. cos function like this:
  159.  
  160. library MathLib
  161.  
  162. kFloat  kFloat  1  extern MathLib  cos
  163.  
  164.  
  165.  
  166. ASSERTIONS
  167. ==========
  168.  
  169. Assertions are provided by a number of programming languages,
  170. and are a very useful way of catching bugs.  Assertions
  171. allow you, during development, to ensure that things are the 
  172. way they're supposed to be at key places.
  173.     
  174. Mops assertions must come within definitions.  You use
  175. them like this:
  176.  
  177.     ASSERT{  <something that evaluates to a flag>  }
  178.     
  179. If ASSERTIONS? is true, this will give error 216 ("assertion failed")
  180. if the evaluated flag is false.  If ASSERTIONS? is false, nothing
  181. will happen - the code between ASSERT{ and } is skipped.
  182.  
  183. ASSERTIONS? can be defined and redefined however and whenever you
  184. like, as long as it returns a flag.  ASSERT{ tests it via EVALUATE,
  185. so the most recently defined definition will be the one that gets 
  186. looked at.  You can define it at the start of your project, or at
  187. the start of each source file, or more often.  It's up to you.
  188. This way you can enable or disable ASSERT{ to suit whatever
  189. you're doing in your project development.
  190.  
  191. Note also, wherever you have ASSERTIONS? defined as a constant with 
  192. value false, no code will even be compiled for the assertion test.
  193. You can use this for code that you know works, so that there's no
  194. performance penalty whatever.
  195.  
  196.  
  197.  
  198.  
  199. --------------------------------------------------------------------
  200.  
  201. As always, I hope you enjoy Mops!
  202.  
  203.  
  204. ム-  Mike Hore            mikeh@zeta.org.au
  205.